#include "../header.h"

//STDIN_FILENO 0  键盘 
//STDOUT_FILENO 1 屏幕
//STDERR_FILENO 2 屏幕
//fd  3  文件 ; // 磁盘

//fcntl 改变文件的相关属性。

/**
 * @函数原型: int fcntl(int fd, int cmd, ... );  2个参数形式 + 3个参数形式 
 * @函数功能: 修改文件描述符 所对应的设备的相关属.
 * @参数说明: 
 * @       参数1: fd 文件描述符
 * @       参数2: cmd,命令值 
 * @       参数3:  根据第二个参数是否有需要  而准备。
 * @返回值: 
 * @param {int} argc
 */
int main(int argc, char const *argv[])
{
    char buff[128] = "";
    //1.修改标准输入设备的 读写属性 ： 阻塞属性（等待） + 非阻塞属性（不等待）
    printf("第一次输入数据\n");
    read(STDIN_FILENO,buff,sizeof(buff));
    //默认属性
    int oldflg = fcntl(STDIN_FILENO,F_GETFL);  //! 2 参数形式
    //在旧属性中 位或 一个新的数值  也就是添加了一个新的属性
    int newflg = oldflg | O_NONBLOCK;
    //成功返回 0 失败返回 -1；
    if(!fcntl(STDIN_FILENO,F_SETFL,newflg))
        printf("非阻塞属性修改成功!\n");
    else
        printf("非阻塞属性修改失败1\n");
    
    //非阻塞
    printf("第二次输入数据\n");
    bzero(buff,sizeof(buff));
    read(STDIN_FILENO,buff,sizeof(buff));

    return 0;
}
